<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>无限滚动示例</title>
    <style>
      /* 全局盒模型设置 */
      *,
      *::before,
      *::after {
        box-sizing: border-box; /* 包含边框和内边距在元素尺寸内 */
      }

      /* 重置默认边距 */
      * {
        margin: 0;
      }

      /* 页面背景设置 */
      body {
        background-color: #030712; /* 深空蓝背景色 */
      }

      /* 滚动容器样式 */
      .wrapper {
        margin-top: 2rem; /* 顶部外边距 */
        width: 90%; /* 相对宽度 */
        max-width: 1536px; /* 最大宽度限制 */
        margin-inline: auto; /* 水平居中 */
        height: 100px; /* 固定高度 */
        position: relative; /* 相对定位 */
        overflow: hidden; /* 隐藏溢出内容 */
        /* 遮罩渐变实现左右边缘淡出效果 */
        mask-image: linear-gradient(
          to right,
          rgba(0, 0, 0, 0),
          /* 左边缘完全透明 */ rgba(0, 0, 0, 1) 20%,
          /* 20%位置开始可见 */ rgba(0, 0, 0, 1) 80%,
          /* 80%位置结束可见 */ rgba(0, 0, 0, 0) /* 右边缘完全透明 */
        );
      }

      /* 向左滚动动画定义 */
      @keyframes scrollLeft {
        to {
          left: -200px; /* 最终位置：左偏移200px */
        }
      }

      /* 向右滚动动画定义 */
      @keyframes scrollRight {
        to {
          right: -200px; /* 最终位置：右偏移200px */
        }
      }

      /* 滚动项基础样式 */
      .itemLeft,
      .itemRight {
        text-align: center; /* 文本水平居中 */
        line-height: 100px; /* 垂直居中 */
        width: 200px; /* 固定宽度 */
        height: 100px; /* 固定高度 */
        background-color: #e11d48; /* 品牌红色 */
        border-radius: 6px; /* 圆角半径 */
        position: absolute; /* 绝对定位 */
        animation-timing-function: linear; /* 线性运动曲线 */
        animation-duration: 30s; /* 完整动画周期 */
        animation-iteration-count: infinite; /* 无限循环 */
      }

      /* 向左运动项初始位置 */
      .itemLeft {
        /* 初始位置计算：取最大值保证首屏充满 */
        left: max(calc(200px * 8), 100%);
        animation-name: scrollLeft; /* 绑定向左动画 */
      }

      /* 向右运动项初始位置 */
      .itemRight {
        /* 初始位置计算：保证右侧溢出 */
        right: max(calc(200px * 8), calc(100% + 200px));
        animation-name: scrollRight; /* 绑定向右动画 */
      }

      /* 阶梯式动画延迟设置 */
      .item1 {
        animation-delay: calc(30s / 8 * (8 - 1) * -1);
      } /* -26.25s */
      .item2 {
        animation-delay: calc(30s / 8 * (8 - 2) * -1);
      } /* -22.5s */
      .item3 {
        animation-delay: calc(30s / 8 * (8 - 3) * -1);
      } /* -18.75s */
      .item4 {
        animation-delay: calc(30s / 8 * (8 - 4) * -1);
      } /* -15s */
      .item5 {
        animation-delay: calc(30s / 8 * (8 - 5) * -1);
      } /* -11.25s */
      .item6 {
        animation-delay: calc(30s / 8 * (8 - 6) * -1);
      } /* -7.5s */
      .item7 {
        animation-delay: calc(30s / 8 * (8 - 7) * -1);
      } /* -3.75s */
      .item8 {
        animation-delay: calc(30s / 8 * (8 - 8) * -1);
      } /* 0s */
    </style>
  </head>
  <body>
    <div class="wrapper">
      <div class="itemLeft item1">李白</div>
      <div class="itemLeft item2">杜甫</div>
      <div class="itemLeft item3">王安石</div>
      <div class="itemLeft item4">毛泽东</div>
      <div class="itemLeft item5">宋江</div>
      <div class="itemLeft item6">刘备</div>
      <div class="itemLeft item7">曹操</div>
      <div class="itemLeft item8">周瑜</div>
    </div>
    <div class="wrapper">
      <div class="itemRight item1">华为</div>
      <div class="itemRight item2">理想</div>
      <div class="itemRight item3">蔚来</div>
      <div class="itemRight item4">小米</div>
      <div class="itemRight item5">极越</div>
      <div class="itemRight item6">小鹏</div>
      <div class="itemRight item7">吉利</div>
      <div class="itemRight item8">宝马</div>
    </div>
  </body>
</html>
